iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 14
0
Big Data

30天學會Data Integration - Kettle系列 第 14

Step - 字串組合與欄位調整

  • 分享至 

  • xImage
  •  

延續上一篇,此篇將繼續介紹如何將拆解的日期重新合併,接下來的操作會比較繁瑣,但如果都能跟得上的話,就代表你對Kettle的操作熟練度又更上一層樓囉!此篇會介紹到[Transform]Select Values與[Transform]String operations

[Transform]Select Values介紹

Select Values是一個專門處理刪除欄位、重新命名欄位與選擇欄位的Step、主要分成三種類型:

  1. Select and Alter:可以指定欄位的順序、名稱、長度與數字的小數點長度
  2. Remove:可刪除指定的欄位
  3. Meta-data:可以更改欄位名稱、類型、長度、格式、編碼、貨幣符號等等...

[Transform]String operations介紹

String operations可以針對字串來做填位、或是大小寫的調整

本篇目標

將上一篇分隔的民國年、月與日欄位做字串相加,得到一個民國年的生日欄位,例如:76/05/22

有六大步驟:

  1. 將年月日轉成字串:將數字轉字串,以便組合文字
  2. 將月與日以0補足2位數:將個位數的月份與日期補0
  3. Add constants:新增日期分隔符號
  4. 組成民國日期:組合日期字串
  5. 刪除欄位:移除不需要的欄位
  6. 重新命名欄位
    http://ithelp.ithome.com.tw/upload/images/20161230/20091626ZVWZiRoGAD.png

步驟1:將年月日轉成字串:將數字轉字串

因為要做字串的相加,必須把原本的民國年、月、日的型態從Integer改為String

新增Select Values

http://ithelp.ithome.com.tw/upload/images/20161230/20091626HqK8x6YweC.png

建立Hop

http://ithelp.ithome.com.tw/upload/images/20161230/200916267s1DcYZjGl.png

設定Select Values

將民國年、月、日的型態改為String
http://ithelp.ithome.com.tw/upload/images/20161230/20091626qsJ9tAWqv7.png

步驟2:將月與日以0補足2位數

因為月份與日是Integer型態,所以1月份會以1顯示,但這樣會造成後續組成完整日期時會少一個字串的長度,所以我們必須盡行補位的處理

新增String operations

http://ithelp.ithome.com.tw/upload/images/20161230/20091626tumI6r3kHS.png

建立Hop

http://ithelp.ithome.com.tw/upload/images/20161230/200916266uoplcrhFl.png

設定String operations

Trim type:修剪的類型
Padding:向左填充或向右填充
Pad char:指定填充的文字
Pad Length:指定填充的長度
http://ithelp.ithome.com.tw/upload/images/20161230/20091626oNLhpUTbDa.png

預覽String operations

可以觀察看月與日已經完成補0囉
http://ithelp.ithome.com.tw/upload/images/20161230/20091626c4ColsB9vn.png

步驟3:新增日期分隔符號

我們會使用/來進行字串的相加,所以需要在新增一個常數,覺得要使用哪個Step呢?就是前一篇提到的Transform[Add constants]

設定 Add constants

http://ithelp.ithome.com.tw/upload/images/20161230/20091626hN4Yx9kcLM.png

步驟4:組合日期字串

將民國年、月、日與日期分隔符號來進行字串的組合,一樣是使用到前一篇的Calculator

新增 Calculator 與建立 Hop

http://ithelp.ithome.com.tw/upload/images/20161230/20091626SvrY6CqfDm.png

設定 Calculator

由於Calculator只提供3種欄位的相加,所以必須進行兩次的運算才能得到完整的年月日與分格符號的加總,設定方式如下圖
http://ithelp.ithome.com.tw/upload/images/20161230/20091626G0H1LGMhRQ.png

預覽 Calculator

http://ithelp.ithome.com.tw/upload/images/20161230/20091626Kwh51WhccL.png

步驟5:刪除不需要的欄位

由於資料處理的過程,一定會透過一些額外的欄位來輔助,而已經使用完畢的欄位,一直出現在眼前也是挺干擾的,所以我們就來把這些欄位通通都拿掉,保留必要的資訊就好。

新增Select Values、建立Hop、設定Select Values

請切換到Remove頁籤,將不需要的欄位給移除掉,說白一點就是,把沒有利用價值的欄位都刪掉XD
http://ithelp.ithome.com.tw/upload/images/20161230/20091626qukJG0gmh8.png

預覽Select Values

http://ithelp.ithome.com.tw/upload/images/20161230/20091626lZ4AmpNzPV.png

步驟6:重新命名欄位名稱

在這邊,會發現我把所有的Step名稱都打上描述了,方便我們了解整個處理的邏輯,修改名稱設定方式就是點兩下Step,在Step name上進行文字輸入即可,回歸正題,我們想把"民國年月日"的欄位名稱改成"生日"

新增Select Values、建立Hop、設定Select Values

請切換到Select & Alter頁籤,按一下Get Fields to select,來選擇我們要顯示的欄位,並且在第4項的Rename to上輸入"生日"
http://ithelp.ithome.com.tw/upload/images/20161230/20091626IjX9trpBvx.png

預覽Select Values

終於!完成了民國年月日的轉號囉
http://ithelp.ithome.com.tw/upload/images/20161230/20091626Xtl66jFCwt.png


我想有些人看到這邊已經吐血了,感覺這種東西就Excel套用公式一下就做完了,幹嘛用Kettle在那邊設定一大堆勒!的確,如果是這種需求我也絕對不會用Kettle做XDDDD(被扁),啊...就是個操作範例讓大家感受一下[Transform]中的Add constants、Calculator、Select Values、String operations的功能,其實看似功能很簡單的Step,在後續其實都會發揮很大的功用,而在這兩篇的操作中,大家又認識了一些Step,當我們認識的Step越多時,可以應用的範圍就又更廣囉!

下一篇將繼續介紹以上這些Transform將如何直接用[Scripting]Modified Java Script Value值接通通取代掉XD,有好東西幹嘛不早講(再次被打),不過有瞭解才有選擇,如果不會寫js就可以透過這兩篇的方式去進行一些資料的分析運算與組合,如果會寫js,那Modified Java Script Value就是另外提供另外一種資料處理的方式,各有優點缺,大家可以在自行評估自己適合哪一種。


上一篇
Step - 處理日期的運算
下一篇
Step - 使用Javascript處理日期運算
系列文
30天學會Data Integration - Kettle30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言